package co.gov.medellin.ssti.sub.paoyer.common.exception;

/**
 * Una clase que implemente esta interfaz contendr� un conjunto de excepciones
 * que les son de utilidad a una aplicaci�n para saber que ocurri� en caso
 * de una falla. Las clases que implementen esta interfaz ser�n las encargadas
 * de alimentar la informaci�n de los errores que pueden suceder en el modulo.
 * Una instancia de la clase que implemete esta interfaz sera creada por la
 * clase ModuleExceptionFactory, qui�n a su vez es llamada por una instancia
 * de las clase UserException o SystemException para mostrar un error
 * determinado.
 * 
 * @version 0.9.
 */
public interface ModuleExceptionInterface {

	/**
	 * Indica que es una Excepcion de Usuario Las Excepciones de Usuario estan
	 * definidas en Centenas
	 */
	public static final int USER_EXCEPTION = 100;

	/**
	 * Indica que es una Excepcion de Sistema Las Excepciones de Sistema estan
	 * definidas en Unidades de Mil
	 */
	public static final int SYSTEM_EXCEPTION = 1000;

	/**
	 * Retorna un objeto ExceptionVO que contienen informaci�n detallada de un
	 * error que puede pasar en el m�dulo, seg�n el tipo de Excepcion pasado
	 * en el tipo.
	 * 
	 * @param messageId
	 *            int Identificador de la Excepcion definida para el modulo.
	 * @return ExceptionVO
	 */
	public ExceptionVO getExceptionVO(int messageId) throws SystemException;

	/**
	 * Obtiene un objeto <code>ModuleVO</code> que contiene el nombre del modulo
	 * y la clase que maneja las excepciones.
	 * 
	 * @return Objeto <code>ModuleVO</code> que contiene el nombre del modulo y
	 *         la clase que maneja las excepciones.
	 */
	public ModuleVO getModuleVO();

}
